/**
 * 客户端配置文件
 * 定义应用程序的各种配置选项
 */

const CONFIG = {
  // WebSocket 连接配置
  websocket: {
    // 自动获取当前主机和端口
    getUrl() {
      const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
      const host = window.location.hostname;
      const port = parseInt(window.location.port) || (window.location.protocol === 'https:' ? 443 : 80);
      // WebSocket 端口通常是 HTTP 端口 + 1
      const wsPort = port === 80 || port === 443 ? 3001 : port + 1;
      return `${protocol}//${host}:${wsPort}`;
    },
    
    // 重连配置
    reconnect: {
      enabled: true,
      maxAttempts: 5,
      delay: 1000,
      backoffFactor: 1.5,
      maxDelay: 30000
    },
    
    // 心跳检测
    heartbeat: {
      enabled: true,
      interval: 30000,
      timeout: 5000
    }
  },
  
  // UI 配置
  ui: {
    // 消息显示配置
    messages: {
      maxHistory: 500,
      autoScroll: true,
      showTimestamp: true,
      showAvatar: true,
      messageMaxLength: 1000
    },
    
    // 通知配置
    notifications: {
      enabled: true,
      sound: true,
      desktop: false,
      duration: 5000
    },
    
    // 主题配置
    theme: {
      default: 'light',
      autoDetect: true
    },
    
    // 动画配置
    animation: {
      enabled: true,
      duration: 300
    }
  },
  
  // 用户设置
  user: {
    // 昵称验证规则
    nickname: {
      minLength: 2,
      maxLength: 20,
      pattern: /^[a-zA-Z0-9\u4e00-\u9fa5_-]+$/,
      forbiddenWords: ['admin', 'root', 'system', '管理员']
    },
    
    // 默认头像列表
    avatars: [
      '👤', '😊', '🤖', '👨‍💻', '👩‍💻', 
      '🎭', '🦄', '🐱', '🐶', '🦊', 
      '🐼', '🐨', '🦁', '🐯', '🐸'
    ]
  },
  
  // 表情符号配置
  emoji: {
    categories: {
      faces: ['😊', '😂', '😍', '🤔', '😢', '😡', '😴', '🤗', '😎', '🤩'],
      people: ['👨', '👩', '👶', '👴', '👵', '👮', '👷', '💁', '🙋', '🤷'],
      nature: ['🌈', '☀️', '🌙', '⭐', '🌸', '🌿', '🦋', '🐝', '🌊', '🔥'],
      objects: ['🎭', '🎨', '🎵', '📱', '💻', '🎮', '🚗', '✈️', '🏠', '🎂'],
      symbols: ['❤️', '💙', '💚', '💛', '💜', '👍', '👎', '✨', '💫', '🔥']
    }
  },
  
  // API 端点
  api: {
    baseUrl: '/api',
    endpoints: {
      health: '/health',
      stats: '/stats',
      onlineUsers: '/users/online',
      systemMessage: '/messages/system'
    }
  },
  
  // 本地存储键名
  storage: {
    userPreferences: 'xiaozhi_chat_preferences',
    userInfo: 'xiaozhi_chat_user',
    theme: 'xiaozhi_chat_theme',
    messageHistory: 'xiaozhi_chat_history'
  },
  
  // 调试配置
  debug: {
    enabled: localStorage.getItem('debug') === 'true',
    logLevel: 'info' // 'debug', 'info', 'warn', 'error'
  },
  
  // 功能开关
  features: {
    privateChat: true,
    fileUpload: true,
    emojiPicker: true,
    notifications: true,
    darkMode: true,
    soundEffects: true
  },
  
  // 安全配置
  security: {
    // XSS 防护
    xssProtection: true,
    
    // 消息内容过滤
    contentFilter: {
      enabled: true,
      maxLength: 1000,
      filterHTML: true,
      filterScripts: true
    },
    
    // 速率限制（客户端限制）
    rateLimit: {
      enabled: true,
      maxMessages: 10,
      timeWindow: 1000 // 毫秒
    }
  }
};

// 冻结配置对象，防止意外修改
Object.freeze(CONFIG);

// 导出配置
if (typeof module !== 'undefined' && module.exports) {
  module.exports = CONFIG;
}